home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Auge 4000 / Auge 4000 #54 (1991-04-07)(Amiga User Gruppe Einzugsgebiet 4000).zip / Auge 4000 #54 (1991-04-07)(Amiga User Gruppe Einzugsgebiet 4000).adf / PopUpMenu / Source / AltStartup.a next >
Text File  |  1991-04-07  |  2KB  |  99 lines

  1.            INCLUDE      "exec/types.i"
  2.            INCLUDE      "libraries/dos.i"
  3.            INCLUDE      "libraries/dosextens.i"
  4.            INCLUDE      "exec/execbase.i"
  5.            INCLUDE      "exec/funcdef.i"
  6.            INCLUDE      "exec/exec_lib.i"
  7.            INCLUDE      "libraries/dos_lib.i"
  8.  
  9. AbsExecBase    EQU      4
  10. POPUPPRI       EQU      5
  11. POPUPSTACK     EQU      2000
  12. * Must use Kickstart 1.2 or higher
  13. LIBVERSION     EQU      33
  14.  
  15.            xref      _LinkerDB
  16.            xref      @InitPopUpMenu
  17.  
  18.            section      text,code
  19.  
  20. Startup:       MOVEM.L      D2-D4/A2-A4/A6,-(SP)
  21.            LEA      _LinkerDB,A4
  22.  
  23. * ------------ Open dos.
  24.            LEA      DosName(PC),A1
  25.            MOVEQ.L      #LIBVERSION,D0
  26.            MOVEA.L      AbsExecBase.W,A6
  27.            JSR      _LVOOpenLibrary(A6)
  28.            MOVE.L      D0,_DOSBase(A4)
  29.  
  30.            TST.L      D0
  31.            BEQ.W      NoDos
  32.  
  33. * ------------ Get pointer to our Process.
  34.            MOVEA.L      ThisTask(A6),A3
  35.  
  36. * ------------ Find current output window.
  37.            LEA      CurrWindow(PC),A0
  38.            MOVE.L      #MODE_OLDFILE,D2
  39.  
  40. * ------------ Run from Workbench ?
  41.            TST.L      pr_CLI(A3)
  42.            BNE.B      FromCLI
  43.  
  44. * ------------ Wait for Workbench startup-message.
  45.            LEA      pr_MsgPort(A3),A0
  46.            JSR      _LVOWaitPort(A6)
  47.            LEA      pr_MsgPort(A3),A0
  48.            JSR      _LVOGetMsg(A6)
  49.            MOVE.L      D0,D3
  50.  
  51. * ------------ Open window on Workbench screen.
  52.            LEA      WbWindow(PC),A0
  53.            MOVE.L      #MODE_NEWFILE,D2
  54.  
  55. FromCLI:       MOVE.L      A0,D1
  56.            MOVEA.L      _DOSBase(A4),A6
  57.            JSR      _LVOOpen(A6)
  58.            MOVE.L      D0,_StdOut(A4)
  59.  
  60.            MOVEA.L      AbsExecBase.W,A6
  61.            TST.L      D0
  62.            BEQ.B      NoStdOut
  63.  
  64. * ------------ Don't unload segments.
  65.            CLR.L      _PopUpSeg(A4)
  66.  
  67. * ------------ Set task priority.
  68.            MOVEA.L      A3,A1
  69.            MOVEQ      #POPUPPRI,D0
  70.            JSR      _LVOSetTaskPri(A6)
  71.  
  72. * ------------ Start PopUpMenu-program. (PC - relative is ok, same hunk)
  73.            JSR      @InitPopUpMenu(PC)
  74.  
  75. * ------------ Must reply if started from workbench.
  76. NoStdOut:      TST.L      pr_CLI(A3)
  77.            BNE.B      Done
  78.            JSR      _LVOForbid(A6)
  79.            MOVEA.L      D3,A1
  80.            JSR      _LVOReplyMsg(A6)
  81. Done:
  82. NoDos:           MOVEQ      #0,D0
  83.            MOVEM.L      (SP)+,D2-D4/A2-A4/A6
  84.            RTS
  85.  
  86. * Put these data in our code-segment.
  87. CurrWindow:    dc.b      '*',0
  88. WbWindow:      dc.b      'CON:200/75/310/45/PopUpMenu',0
  89. DosName:       dc.b      'dos.library',0
  90.  
  91.            section      __MERGED,bss
  92.  
  93.            xref      _DOSBase
  94.            xref      _StdOut
  95.            xref      _PopUpSeg
  96.  
  97.            END
  98.  
  99.